package com.bestcem.xm.user.service;

import com.bestcem.xm.common.core.domain.web.ServiceResult;
import com.bestcem.xm.user.service.dto.user.UserBookingTrackDTO;

import java.util.Date;
import java.util.List;

/**
 * 用户埋点数据服务
 *
 * @author qiongyu.cui <qiongyu.cui@idiaoyan.com>
 * @version v1.0
 * @date 2022/3/17 16:44
 */
public interface UserBookingTrackService {

    /**
     * 根据埋点信息id查询用户埋点信息
     *
     * @param bookingTrackId 用户埋点id
     * @return com.bestcem.xm.util.ServiceResult<com.bestcem.xm.user.service.dto.user.UserBookingTrackDTO>
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/17 16:48
     */
    ServiceResult<UserBookingTrackDTO> selectById(String bookingTrackId);

    /**
     * 根据相关条件查询埋点信息列表
     *
     * @param userBookingTrackDTO 查询的相关条件
     * @return com.bestcem.xm.util.ServiceResult<java.util.List < com.bestcem.xm.user.service.dto.user.UserBookingTrackDTO>>
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/17 16:49
     */
    ServiceResult<List<UserBookingTrackDTO>> selectBySelective(UserBookingTrackDTO userBookingTrackDTO);

    /**
     * 有选择的查询用户埋点信息
     *
     * @param userBookingTrackDTO 用户埋点信息
     * @return com.bestcem.xm.util.ServiceResult<java.lang.String>
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/17 16:50
     */
    ServiceResult<String> insertSelective(UserBookingTrackDTO userBookingTrackDTO);

    /**
     * 根据主键有选择的做更新
     *
     * @param userBookingTrackDTO 用户埋点信息
     * @return java.lang.Integer 更新成功的条数
     * @author yanjishuo <jishuo.yan@idiaoyan.cn>
     * @date 2022/03/16 11:24
     */
    ServiceResult<Integer> updateSelectiveById(UserBookingTrackDTO userBookingTrackDTO);

    /**
     * 根据公司code更新埋点信息
     *
     * @param userBookingTrackDTO 用户埋点信息
     * @return com.bestcem.xm.util.ServiceResult<java.lang.Integer>
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/05/28 23:08
     */
    ServiceResult<Integer> updateSelectiveByOrgCode(UserBookingTrackDTO userBookingTrackDTO);

    /**
     * 新增用户埋点信息
     *
     * @param userBookingTrackDTO 用户埋点信息
     * @return java.lang.String 插入成功的条数
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/17 16:34
     */
    ServiceResult<String> insert(UserBookingTrackDTO userBookingTrackDTO);

    /**
     * 获取指定时间区间的埋点信息
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return com.bestcem.xm.util.ServiceResult<java.lang.String>
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/06/01 14:39
     */
    ServiceResult<List<UserBookingTrackDTO>> findAndGenFileByCreateTimeInterval(Date startTime, Date endTime);

}
